{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "83dffa9f-b54d-4497-bdb6-5b6200ba47c2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1 2 3]\n",
      "0\n",
      "[0.6 1.2 0. ]\n",
      "3.1400000000000006\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import sys\n",
    "\n",
    "weights = np.array([[0.1, 0.2, 0],[0.1, 0.2, 0],[0.1, 0.2, 0]])\n",
    "input = np.array([[1,2,3],[1,2,3],[1,2,3]])\n",
    "\n",
    "layer_0 = input[0]\n",
    "print(layer_0) \n",
    "print(np.argmin(layer_0)) \n",
    "\n",
    "output = layer_0.dot(weights)\n",
    "\n",
    "print(output)\n",
    "\n",
    "ih_wgt = np.array([ \n",
    "            [0.1, 0.2, -0.1], #hid[0]\n",
    "            [-0.1,0.1, 0.9], #hid[1]\n",
    "            [0.1, 0.4, 0.1]]).T #hid[2]\n",
    "\n",
    "\n",
    "# hid[0] hid[1] hid[2]\n",
    "hp_wgt = np.array([  \n",
    "            [0.3, 1.1, -0.3], #hurt?\n",
    "            [0.1, 0.2, 0.0], #win?\n",
    "            [0.0, 1.3, 0.1] ]).T #sad?\n",
    "\n",
    "weights = np.array([ih_wgt, hp_wgt])\n",
    "\n",
    "\n",
    "error = np.sum((weights[1:2]) ** 2)\n",
    "print(error)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "223e3b23",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 1asd1\n",
      "1 22\n",
      "2 43\n",
      "3 24\n",
      "4 15\n"
     ]
    }
   ],
   "source": [
    "a=['1asd1','22','43','24','15']\n",
    "\n",
    "for i,l in enumerate(a):\n",
    "    print(i,l)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "4bce11ab-c2c4-4953-b4cf-977a507f7d6f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(2, 4)\n"
     ]
    }
   ],
   "source": [
    "\n",
    "a = np.array([0,1,2,3]) # a vector\n",
    "b = np.array([4,5,6,7]) # another vector\n",
    "c = np.array([[0,1,2,3], # a matrix\n",
    "              [4,5,6,7]])\n",
    "\n",
    "print(c.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "2398b496-b4da-46d0-9ec2-fc830f4a6027",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    " \n",
    "def sigmoid(x):\n",
    "    return 1 / (1 + np.exp(-x))\n",
    "\n",
    "def sigmoid_deriv(output):\n",
    "    return output*(1-output)\n",
    "\n",
    "def tanh(x):\n",
    "    return np.tanh(x)\n",
    "\n",
    "def tanh_deriv(output):\n",
    "    return 1-(output**2)\n",
    "\n",
    "def relu(x):\n",
    "    return (x > 0) * x \n",
    "\n",
    "def relu_deriv(output):\n",
    "    return output>0\n",
    "\n",
    "x = np.arange(-10, 10, 0.1)\n",
    "\n",
    "y = sigmoid(x)\n",
    "y_deriv = sigmoid_deriv(y)\n",
    "\n",
    "#y = tanh(x)\n",
    "#y_deriv = tanh_deriv(y)\n",
    "\n",
    "#y = relu(x)\n",
    "#y_deriv = relu_deriv(y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "1580334f-9bb2-4bcd-9b06-987ec27d5257",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 500x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 创建图形\n",
    "plt.figure(figsize=(5, 3))\n",
    " \n",
    "#plt.plot(x, y, label='Sigmoid Function')\n",
    "plt.plot(x, y_deriv, label='Sigmoid Deriv')\n",
    "\n",
    "#plt.plot(x, y, label='Tanh Function')\n",
    "#plt.plot(x, y_deriv, label='Tanh Deriv')\n",
    "\n",
    "#plt.plot(x, y, label='ReLU Function')\n",
    "#plt.plot(x, y_deriv, label='ReLU Deriv')\n",
    " \n",
    "plt.title('')\n",
    "plt.xlabel('x')\n",
    "plt.ylabel('y')\n",
    " \n",
    "plt.grid(True)\n",
    "plt.legend()\n",
    " \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "fb8a9315-9451-4631-a270-b68294e869ba",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TensorFlow 版本: 2.10.0\n",
      "加法运算结果:\n",
      "8\n"
     ]
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "\n",
    "# 检查 TensorFlow 版本\n",
    "print(f\"TensorFlow 版本: {tf.__version__}\")\n",
    "\n",
    "# 创建两个常量张量\n",
    "a = tf.constant(5)\n",
    "b = tf.constant(3)\n",
    "\n",
    "# 进行加法运算\n",
    "result = tf.add(a, b)\n",
    "\n",
    "# 打印结果\n",
    "print(\"加法运算结果:\")\n",
    "# 在 TensorFlow 2.x 中，默认是动态图模式，可直接获取结果\n",
    "print(result.numpy())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "f4722247-f4e4-4ab4-aac4-b84128102317",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "weights = np.array([0.5,0.48,-0.7])\n",
    "alpha = 0.1\n",
    "\n",
    "streetlights = np.array( [[ 1, 0, 1 ],\n",
    "                          [ 0, 1, 1 ],\n",
    "                          [ 0, 0, 1 ],\n",
    "                          [ 1, 1, 1 ],\n",
    "                          [ 0, 1, 1 ],\n",
    "                          [ 1, 0, 1 ] ] )\n",
    "\n",
    "walk_vs_stop = np.array( [ 0, 1, 0, 1, 1, 0 ] )\n",
    "\n",
    "input = streetlights[0] # [1,0,1]\n",
    "goal_prediction = walk_vs_stop[0] # equals 0... i.e. \"stop\"\n",
    "\n",
    "errors = []\n",
    "\n",
    "for iteration in range(40):\n",
    "    error_for_all_lights = 0\n",
    "    for row_index in range(len(walk_vs_stop)):\n",
    "        input = streetlights[row_index]\n",
    "        goal_prediction = walk_vs_stop[row_index]\n",
    "        \n",
    "        prediction = input.dot(weights)\n",
    "        \n",
    "        error = (goal_prediction - prediction) ** 2\n",
    "        error_for_all_lights += error\n",
    "        \n",
    "        delta = prediction - goal_prediction\n",
    "        weights = weights - (alpha * (input * delta))\t\n",
    "    #print(\"Error:\" + str(error_for_all_lights) + \"\\n\")\n",
    "    errors.append(error_for_all_lights)\n",
    "\n",
    "iterate = np.array(range(40))\n",
    "e = np.array(errors)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "1453d398-25de-4304-9a61-a8c41da28e22",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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qRSjoqLEOXPmiMXFxZJmdpQXgLh161bbNJ62rp1l9sR1/dvf/tb2N6JPnz7ijBkzbEUpip63jkWx7cyeuI5b07wsXbWu+RFdRERETvCYJRERkRMsSyIiIidYlkRERE6wLImIiJxgWRIRETnBsiQiInKCZUlEROQEy5KIiMgJliUREZETLEsiIiInWJZEt4gff/wRYWFheOWVV2zjvvzyS/j5+SErK0vCZESej/eGJbqF7N27F/fccw8OHTqEoUOHIi4uDnfddRfS09Oljkbk0ViWRLeYRYsW4fPPP8fYsWNx8uRJHDt2rM1PmSciliXRLaeurg4jRoxASUkJ8vPzMXLkSKkjEXk8HrMkusVcuHABly9fhsViwaVLl6SOQ+QVuGVJdAsxGo0YN24cRo8ejaFDh2LDhg04ffo0QkNDpY5G5NFYlkS3kGeeeQYffvghTp48iR49emD69OkICAjAP//5T6mjEXk07oYlukXk5OQgPT0dO3bsgE6ng0wmw44dO3Dw4EFs2rRJ6nhEHo1blkRERE5wy5KIiMgJliUREZETLEsiIiInWJZEREROsCyJiIicYFkSERE5wbIkIiJygmVJRETkBMuSiIjICZYlERGREyxLIiIiJ1iWRERETvw/k663iaK7o3cAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 500x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 创建图形\n",
    "plt.figure(figsize=(5, 3))\n",
    " \n",
    "#plt.plot(x, y, label='Sigmoid Function')\n",
    "plt.plot(iterate, e, label='Sigmoid Deriv')\n",
    "\n",
    "#plt.plot(x, y, label='Tanh Function')\n",
    "#plt.plot(x, y_deriv, label='Tanh Deriv')\n",
    "\n",
    "#plt.plot(x, y, label='ReLU Function')\n",
    "#plt.plot(x, y_deriv, label='ReLU Deriv')\n",
    " \n",
    "plt.title('')\n",
    "plt.xlabel('x')\n",
    "plt.ylabel('y')\n",
    " \n",
    "plt.grid(True)\n",
    "plt.legend()\n",
    " \n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "myenv",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.18"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
